class SmoothingMethods(object):
    #===========================================================================
    # Moving average for time series with constant sampling
    #===========================================================================
    @classmethod
    def ma_back_cs(cls, ts, nsteps):
        raise NotImplementedError

    @classmethod
    def ma_symm_cs(cls, ts, nsteps):
        raise NotImplementedError

    @classmethod
    def ma_exp_back_cs(cls, ts, nsteps):
        raise NotImplementedError

    @classmethod
    def ma_exp_symm_cs(cls, ts, nsteps):
        raise NotImplementedError

    @classmethod
    def ma_weight_cs(cls, ts, wback=None, wfwd=None):
        raise NotImplementedError

    @classmethod
    def ma_cumm_cs(clsm, ts):
        raise NotImplementedError

    #===========================================================================
    # Unified access for all moving average routines
    #===========================================================================
    @classmethod
    def moving_average(cls, ts, nsteps=None, delta_t=None, method=None):
        raise NotImplementedError


    #===========================================================================
    # Statistical models
    #===========================================================================
    '''
    AR - Auto regressive
    ARMA - Auto regressive moving average
    ARIMA - Auto regressive integrated moving average
    '''

if __name__ == '__main__':
    import doctest
    doctest.testmod(optionflags=doctest.REPORT_ONLY_FIRST_FAILURE)